package com.scau.util;

import java.sql.Timestamp;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author Jinglun
 * @create 2017年3月13日
 * 
 * 该类实现Java中String,Date,Timestamp之间的互换
 * 
 */
public class DateTransform {

	// String -> Date
	public Date sToDate(String dateStr) {
		// String dateStr = "2010/05/04 12:34:23";
		Date date = new Date();

		// 注意format的格式要与日期String的格式相匹配
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		try {
			date = sdf.parse(dateStr);
			System.out.println(date.toString());
			return date;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	/*
	 * Date->String 日期向字符串转换，可以设置任意的转换格式format
	 */
	public String dToString(Date date) {
		String dateStr = "";
		// Date date = new Date();

		// format的格式可以任意
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		try {
			dateStr = sdf.format(date);
			System.out.println(dateStr);
			return dateStr;

		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	/*
	 * String->Timestamp，使用Timestamp的valueOf()方法。注意：String的类型必须形如： yyyy-MM-dd HH:mm:ss
	 * 如果String为其他格式，可考虑重新解析下字符串，再重组
	 */
	public Timestamp sToTimestamp(String tsStr) {
		Timestamp ts = new Timestamp(System.currentTimeMillis());
		// String tsStr = "2011-05-09 11:49:45";
		try {
			ts = Timestamp.valueOf(tsStr);
			System.out.println(ts);
			return ts;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	/*
	 * Timestamp->Stirng，使用Timestamp的toString()方法或者借用DateFormat
	 */
	public String tToStirng(Timestamp ts) {
		// Timestamp ts = new Timestamp(System.currentTimeMillis());
		String tsStr = "";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		try {
			tsStr = sdf.format(ts);
			System.out.println(tsStr);
			return tsStr;
			
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	/*
	 * Timestamp -> Date Date和Timesta是父子类关系
	 */
	public Date tToDate(Timestamp ts) {
		// Timestamp ts = new Timestamp(System.currentTimeMillis());
		Date date = new Date();
		try {
			date = ts;
			System.out.println(date);
			return date;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	/*
	 * Date->Timestamp 父类不能直接向子类转化，可借助中间的String
	 */
	public Timestamp dToTimestamp(Date date) {
		// 调用上面的dToString方法
		String strDate = dToString(date);
		// 调用上面的sToTimestamp方法
		Timestamp ts = sToTimestamp(strDate);
		return ts;
	}

}
